Microsoft Technologies Dynamic Language Switching Techniques গাইড ও নোট

330

Dynamic Language Switching হল একটি গুরুত্বপূর্ণ ফিচার, যা অ্যাপ্লিকেশনগুলিকে বিভিন্ন ভাষায় দ্রুত পরিবর্তন করার সুযোগ দেয়, যাতে ব্যবহারকারীরা তাদের পছন্দসই ভাষায় অ্যাপ্লিকেশনটি ব্যবহার করতে পারেন। এটি বিশেষভাবে আন্তর্জাতিক অ্যাপ্লিকেশন এবং ইউজার-বান্ধব অ্যাপ্লিকেশনের জন্য গুরুত্বপূর্ণ, যেখানে বিভিন্ন অঞ্চলের ব্যবহারকারীরা অ্যাপ্লিকেশনটি ব্যবহার করবেন।

Windows অ্যাপ্লিকেশন ডেভেলপমেন্টে dynamic language switching করার জন্য WPF, WinUI 3, এবং UWP-এ Resource Files এবং CultureInfo ব্যবহার করা হয়। এই টিউটোরিয়ালে Dynamic Language Switching Techniques নিয়ে আলোচনা করা হবে।


১. Localization and Resource Files

Windows অ্যাপ্লিকেশনগুলিতে ভাষার পরিবর্তন করার জন্য resource files ব্যবহার করা হয়। প্রতিটি ভাষার জন্য আলাদা .resx ফাইল তৈরি করা হয়, যেখানে স্ট্রিংগুলি সেই ভাষায় অনুবাদ করা থাকে। অ্যাপ্লিকেশনটি চলাকালীন সময়েই ব্যবহারকারী ভাষা পরিবর্তন করতে পারবেন এবং UI স্বয়ংক্রিয়ভাবে পরিবর্তিত হবে।

Step 1: Resource File তৈরি করা

  1. Add New Resource File:

    • Visual Studio-তে Resource File (.resx) তৈরি করুন।
    • এটি স্ট্রিংগুলি সংরক্ষণ করবে যা বিভিন্ন ভাষায় অনুবাদ করা হবে।

    উদাহরণস্বরূপ:

    • Resources.resx (ডিফল্ট ভাষা)
    • Resources.fr.resx (ফরাসি ভাষার জন্য)
    • Resources.es.resx (স্প্যানিশ ভাষার জন্য)

Step 2: Resource ফাইলে স্ট্রিং সংরক্ষণ করা

Resources.resx ফাইলে স্ট্রিং যোগ করা:

<data name="Greeting" xml:space="preserve">
  <value>Hello, welcome to our app!</value>
</data>

Resources.fr.resx ফাইলে ফরাসি অনুবাদ:

<data name="Greeting" xml:space="preserve">
  <value>Bonjour, bienvenue dans notre application!</value>
</data>

Step 3: Language Change করা

UI-তে ডাইনামিক ভাষা পরিবর্তনের জন্য CultureInfo ব্যবহার করতে হবে।

using System.Globalization;
using System.Threading;

public void ChangeLanguage(string languageCode)
{
    // Change the culture info based on the language code
    CultureInfo newCulture = new CultureInfo(languageCode);
    Thread.CurrentThread.CurrentCulture = newCulture;
    Thread.CurrentThread.CurrentUICulture = newCulture;

    // Refresh UI elements to reflect the new culture
    Resources.Culture = newCulture;
}

Step 4: XAML-এ Resource Binding

XAML ফাইলে Binding ব্যবহার করে ডেটা লোকালাইজেশন করা যাবে:

<TextBlock Text="{x:Static properties:Resources.Greeting}" />

এখানে Greeting হচ্ছে .resx ফাইলের কিপর্যন্ত স্ট্রিং।


২. Using CultureInfo for Dynamic Switching

CultureInfo কন্ট্রোলের মাধ্যমে অ্যাপ্লিকেশনটির ভাষা পরিবর্তন করা হয়। এটি CurrentCulture এবং CurrentUICulture সেট করে, যা অ্যাপ্লিকেশনের UI এর ভাষা পরিবর্তন করবে।

উদাহরণ: CultureInfo ব্যবহার করে ভাষা পরিবর্তন করা

using System.Globalization;
using System.Threading;

public void SetLanguage(string cultureName)
{
    var cultureInfo = new CultureInfo(cultureName);
    Thread.CurrentThread.CurrentCulture = cultureInfo;
    Thread.CurrentThread.CurrentUICulture = cultureInfo;

    // Refresh UI after culture change
    Application.Current.Resources.Clear();
    Application.Current.Resources.MergedDictionaries.Clear();
    Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary { Source = new Uri($"pack://application:,,,/Resources/{cultureName}.xaml") });
}

ব্যাখ্যা:

  • CultureInfo কন্ট্রোলের মাধ্যমে যে ভাষা পরিবর্তন হবে তা নির্ধারণ করা হয়।
  • CurrentCulture এবং CurrentUICulture দ্বারা UI কে নতুন ভাষার জন্য কনফিগার করা হয়।
  • Resources.MergedDictionaries-এ নতুন ResourceDictionary লোড করা হয়, যা নতুন ভাষার জন্য প্রয়োজনীয় রিসোর্সকে অন্তর্ভুক্ত করে।

৩. Switching Language at Runtime in WPF

WPF অ্যাপ্লিকেশন-এ runtime-এ ভাষা পরিবর্তন করার জন্য ResourceManager ব্যবহার করা যেতে পারে। এটি ভাষা পরিবর্তনের সময় UI রিফ্রেশ করার সুযোগ দেয়।

Step 1: Create Resource Files

  1. Resources.xaml (ডিফল্ট ভাষা)
  2. Resources.fr.xaml (ফরাসি ভাষা)
  3. Resources.es.xaml (স্প্যানিশ ভাষা)

Step 2: Dynamic Language Switching Code

using System.Globalization;
using System.Windows;

public void ChangeLanguage(string language)
{
    CultureInfo ci = new CultureInfo(language);
    Thread.CurrentThread.CurrentCulture = ci;
    Thread.CurrentThread.CurrentUICulture = ci;
    
    // Reload resources based on selected language
    var resourceDictionary = new ResourceDictionary();
    resourceDictionary.Source = new Uri($"pack://application:,,,/Resources/{language}.xaml", UriKind.Absolute);
    
    Application.Current.Resources.MergedDictionaries.Clear();
    Application.Current.Resources.MergedDictionaries.Add(resourceDictionary);
}

Step 3: Bind Resources in XAML

<TextBlock Text="{x:Static properties:Resources.Greeting}" />

এখানে Greeting হচ্ছে .resx ফাইলের কিপর্যন্ত স্ট্রিং। ভাষা পরিবর্তন হলে UI তে এই স্ট্রিংটি পরিবর্তিত হবে।


৪. Language Switching in WinUI 3

WinUI 3-এ Localization এবং Dynamic Language Switching করার জন্য প্রায় একই প্রক্রিয়া অনুসরণ করা হয়। তবে WinUI 3-এ ResourceDictionary এবং CultureInfo কৌশল ব্যবহার করা হয়।

Step 1: Create Resource Files

WinUI 3-এ .resw ফাইল ব্যবহার করা হয় যেখানে স্ট্রিং সংরক্ষণ করা থাকে:

  • Strings.resw (ডিফল্ট ভাষা)
  • Strings.fr.resw (ফরাসি ভাষা)
  • Strings.es.resw (স্প্যানিশ ভাষা)

Step 2: Change Language in WinUI 3

using Windows.ApplicationModel.Resources.Core;
using System.Globalization;
using Windows.Globalization;

public void SetLanguage(string languageCode)
{
    var language = new Language(languageCode);
    ApplicationLanguages.PrimaryLanguageOverride = language.Tag;

    // Refresh UI to reflect the language change
    var resourceContext = ResourceContext.GetForCurrentView();
    resourceContext.Languages = new string[] { language.Tag };
    
    // Update the UI with new language
    Resources.DefaultContext = resourceContext;
}

Step 3: Bind Resources in XAML

<TextBlock Text="{Binding Path='Resources.Greeting'}"/>

এখানে Resources.Greeting হল .resw ফাইলের কিপর্যন্ত স্ট্রিং।


৫. Handling Right-to-Left Languages

ডান থেকে বাম (Right-to-Left, RTL) ভাষার জন্য আপনাকে UI কন্ট্রোলের অ্যালাইনমেন্টও পরিবর্তন করতে হবে। উদাহরণস্বরূপ, আরবি বা হিব্রু ভাষার জন্য অ্যাপ্লিকেশনে কন্ট্রোলের অ্যালাইনমেন্ট রিভার্স করা হয়।

উদাহরণ: RTL সমর্থন

<TextBlock Text="{Binding Path=Greeting}" FlowDirection="RightToLeft"/>

এখানে FlowDirection="RightToLeft" দিয়ে কন্ট্রোলের টেক্সট এবং UI রাইট-টু-লেফট ভাষার জন্য সেট করা হয়েছে।


উপসংহার

Dynamic Language Switching অ্যাপ্লিকেশনে ইন্টারন্যাশনালাইজেশন এবং ইউজার কাস্টমাইজেশন নিশ্চিত করার একটি কার্যকরী পদ্ধতি। DataTemplate, CultureInfo, Resource Files এবং ResourceManager ব্যবহার করে অ্যাপ্লিকেশনটি বিভিন্ন ভাষায় স্বয়ংক্রিয়ভাবে রূপান্তরিত হতে পারে। এই টেকনিকগুলো ব্যবহার করে আপনি ডাইনামিক ভাষার পরিবর্তন করতে পারবেন, যা একটি আন্তর্জাতিক অ্যাপ্লিকেশন তৈরি করতে সহায়তা করে।

Content added By
Promotion

Are you sure to start over?

Loading...